package com.zpark.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 用户控制层接口
 */
@Controller
@RequestMapping("/user")
public class UserController {

    /**
     * Servlet API 向 request 域对象中共享数据
     * @return
     */
    @RequestMapping("req.do")
    public String requestTest(HttpServletRequest request){
        request.setAttribute("msg", "Servlet API 向 request 域对象中共享数据");
        return "main";
    }

    /**
     * ModelAndView 向 request 域对象中共享数据
     * @return
     */
    @RequestMapping("/model_and_view.do")
    public ModelAndView modelAndViewTest(){
        ModelAndView view = new ModelAndView();
        // 添加绑定数据
        view.addObject("msg", "ModelAndView 向 request 域对象中共享数据");
        // 设置视图名字
        view.setViewName("main");

        return view;
    }

    /**
     * Model 向 request 域对象中共享数据
     * @param model
     * @return
     */
    @RequestMapping("/model.do")
    public String modelTest(Model model){
        // 向model对象当中绑定数据
        model.addAttribute("msg", "Model 向 request 域对象中共享数据");
        return "main";
    }

    /**
     * Map 向 request 域对象中共享数据
     * @param map
     * @return
     */
    @RequestMapping("/map.do")
    public String mapTest(Map<String, String> map){
        map.put("msg", "Map 向 request 域对象中共享数据");
        return "main";
    }

    /**
     * ModelMap 向 request 对象中共享数据
     * @param modelMap
     * @return
     */
    @RequestMapping("/model_map.do")
    public String modelMapTest(ModelMap modelMap){
        modelMap.addAttribute("msg", "ModelMap 向 request 对象中共享数据");
        return "main";
    }
}
